package com.wn.service.db

import android.content.Context
import androidx.room.Database
import androidx.room.Room
import androidx.room.RoomDatabase

/**
 * @Author: wn
 * @Date: 2023/2/21 17:14
 * @Description: database定义数据库
 * 数据库操作
 * 数据库的增删改查读写应该放在非UI线程 查询自带异步操作 其他 需要 suspend
 * Schema 文件  清楚的知道  数据库的变更情况  排查问题
 * exportSchema = true   指定位置
 */
@Database(entities = [UserInfo::class], version = 1, exportSchema = false)
abstract class DataBase : RoomDatabase() {

  abstract fun userDao(): UserDao

// hilt RoomModule  替代

  companion object {
    private const val DB_NAME = "database_db"

    @Volatile
    private var instance: DataBase? = null

    @Synchronized // 保证线程安全
    fun getInstance(context: Context): DataBase =
      instance ?: Room.databaseBuilder(context, DataBase::class.java, DB_NAME)
        .build()
        .also { instance = it }
  }
}